package vista.ventanaTarea;

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;
import javax.swing.JPanel;

import modelo.exception.MissingDataException;

/**
 * @author Cristian
 * 
 * */
public class BotonAgregarListener implements ActionListener {
	
	//Variable *********************************************************** //
	private AgregarTareaAlProyecto ventana;
	
	//Constructor *********************************************************** //
	public BotonAgregarListener(AgregarTareaAlProyecto ventana){
		this.setVentana(ventana);
	}
	
	/**
	 * Crea una nueva tarea.
	 * Puede ser simple con o sin predecesor, o compuesta con o sin predecesor.
	 * Se debe elegir el tipo de Tarea.
	 * */
	public void actionPerformed(ActionEvent e) {

		//No se eligio el tipo de Tarea.
		if(this.ventana.getTipoTarea() == null){
			JPanel panel = new JPanel();
			JOptionPane.showMessageDialog(panel, "Debe elegirse un tipo de tarea",
					"Error", JOptionPane.ERROR_MESSAGE);
		}
		else{
			this.ventana.dispose();
			
			if(this.ventana.getTipoTarea().equalsIgnoreCase("Simple")){
		
				//Sin tarea predecesora
				if(this.ventana.getTareaPredecesora() == null){
				
					try {
						this.ventana.getProyectoSistema().crearTareaSimple(this.ventana.getNameTextField().getText(), Integer.parseInt(this.ventana.getImportance().getText()) , 
								this.ventana.getFinEstimada().getText(), Integer.parseInt(this.ventana.getEstimacionAprox().getText()))	;
					} catch (NumberFormatException e1) {
						e1.printStackTrace();
					} catch (MissingDataException e1) {
						Component panel = new JPanel();
						JOptionPane.showMessageDialog(panel , "Rellene todos los datos",
								"Mensaje", JOptionPane.ERROR_MESSAGE);
					}
				
				//Con tarea predecesora
				}else{
					try {
						this.ventana.getProyectoSistema().crearTareaSimple(this.ventana.getNameTextField().getText(), Integer.parseInt(this.ventana.getImportance().getText()) , 
								this.ventana.getFinEstimada().getText(), Integer.parseInt(this.ventana.getEstimacionAprox().getText()), this.ventana.getTareaPredecesora())	;
					} catch (NumberFormatException e1) {
						e1.printStackTrace();
					} catch (MissingDataException e1) {
						Component panel = new JPanel();
						JOptionPane.showMessageDialog(panel , "Rellene todos los datos",
								"Mensaje", JOptionPane.ERROR_MESSAGE);
					}
				}
			}
		
			if(this.ventana.getTipoTarea().equalsIgnoreCase("Compuesta")){
			
				//Sin tarea predecesora
				if(this.ventana.getTareaPredecesora() == null){
				
					try {
						this.ventana.getProyectoSistema().crearTareaCompuesta(this.ventana.getNameTextField().getText(), Integer.parseInt(this.ventana.getImportance().getText()) , 
								this.ventana.getFinEstimada().getText(), Integer.parseInt(this.ventana.getEstimacionAprox().getText()), this.ventana.getTareasCompuestas())	;
					} catch (NumberFormatException e1) {
						e1.printStackTrace();
					} catch (MissingDataException e1) {
						Component panel = new JPanel();
						JOptionPane.showMessageDialog(panel , "Rellene todos los datos",
								"Mensaje", JOptionPane.ERROR_MESSAGE);
					}

				//Con tarea predecesora
				}else{
					try {
						this.ventana.getProyectoSistema().crearTareaCompuesta(this.ventana.getNameTextField().getText(), Integer.parseInt(this.ventana.getImportance().getText()) , 
								this.ventana.getFinEstimada().getText(), Integer.parseInt(this.ventana.getEstimacionAprox().getText()), this.ventana.getTareaPredecesora(), this.ventana.getTareasCompuestas())	;
					} catch (NumberFormatException e1) {
						e1.printStackTrace();
					} catch (MissingDataException e1) {
						Component panel = new JPanel();
						JOptionPane.showMessageDialog(panel , "Rellene todos los datos",
								"Mensaje", JOptionPane.ERROR_MESSAGE);
					}
				}
			}	
		}
//		this.ventana.getImportance().addKeyListener(new KeyListenerTask (this.ventana.getAgregar(), this.ventana));
//		this.ventana.getEstimacionAprox().addKeyListener(new KeyListenerTask (this.ventana.getAgregar(),this.ventana));
//		this.ventana.getFinEstimada().addKeyListener(new KeyListenerTask (this.ventana.getAgregar(), this.ventana));
		
	}
	
	
	//GET&SET     *********************************************************** //
	public AgregarTareaAlProyecto getVentana() {
		return ventana;
	}


	public void setVentana(AgregarTareaAlProyecto ventana) {
		this.ventana = ventana;
	}



	
}
